package com.dd.cloud.user.req.aicms;

import com.dd.cloud.common.annotate.validation.IDcard;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDate;

/**
 * 诊断接口请求参数
 *
 * @author vodbook
 */
@Data
public class AskDoctorParamsReq implements Serializable {
    private static final long serialVersionUID = 7564892302148735636L;

    /**
     * 序号  必填 疾病序号,如：ZK_FUB
     */
    @NotEmpty(message = "疾病序号不能为空,如：ZK_FUB")
    @Size(max = 20, message = "疾病序号最长20位字符")
    private String xuhao;

    /**
     * 症状ids  必填 症状id集合，如:A2,B7,D4
     */
    @NotEmpty(message = "症状ID不能为空，多个id由,号隔开。如:A2,B7,D4")
    @Size(max = 300, message = "症状ID最长300位字符")
    private String ids;

    /**
     * 性别  必填 性别。如：男，女，未知
     */
    @NotEmpty(message = "性别不能为空，性别。如：男，女，未知")
    private String XB;

    /**
     * 年龄  必填 年龄。如：45
     */
    @NotEmpty(message = "年龄不能为空")
    private String NL;

    /**
     * 民族  必填 族别。如：汉族，维族
     */
    @NotEmpty(message = "族别不能为空，如：汉族，维族等")
    private String ZB;

    /**
     * 婚姻状况
     */
    @NotEmpty(message = "婚姻状况不能为空，如：未婚，已婚")
    private String HYZK;

    /**
     * 外部id
     */
    private String extern_id;

    /**
     * 姓名  选填
     */
    private String XM;

    /**
     * 联系电话  选填
     */
    private String LXDH;

    /**
     * 通讯地址  选填
     */
    private String TXDZ;

    /**
     * 医院名称  选填
     */
    private String YYMC;

    /**
     * 用户id
     */
    private Integer UserID;

    /**
     * 用户类型 同登录类型
     */
    private Integer UserType;

    /**
     * 就诊卡id
     */
    private String medId;

    /**
     * 是否怀孕 1已怀孕 0未怀孕
     */
    private Integer pregnant;

    /**
     * 家族病史
     */
    private String familyMedicalHistory;

    /**
     * 传染病史
     */
    private String contagionHistory;

    /**
     * 药物过敏史
     */
    private String drugAllergyHistory;

    /**
     * 科室名称
     */
    private String departmentName;

    /**
     * 出生日期
     */
    @NotNull(message = "出生日期不能为空")
    private LocalDate birthDate;

    /**
     * 科室名称
     */
    @IDcard(required = false)
    private String idCard;

    /**
     * 疾病名称
     */
    @NotEmpty(message = "疾病名称不能为空")
    @Size(max = 20, message = "疾病名称最长1000位字符")
    private String diseasename;

    /**
     * 症状名称
     */
    @NotEmpty(message = "症状名称不能为空")
    @Size(max = 1500, message = "症状名称最长1500位字符")
    private String zzName;

    /**
     * flag
     * int 必填 是否需要确认。这个值与上次返回的nErrorCode配合使用，有特殊的含义，当： 1、nErrorCode
     * 小于0时，代表ids或者info输入有误，此时sResult与sErrorMsg是错误信息；特别的，
     * 当值等于-2时需要再次选择病症，无论有无选择病症都会出报告，此时flag值需要传65536； 二次可以选择的病症标记flag为1；
     * 2、nErrorCode 大于0时，代表需要二次用户确认，sResult是确认提示信息， 如果用户选择“是”则需要把flag值做为参数再次调用此接口.
     */
    private Integer flag;

    /**
     * 是否是返回四诊页面重新点击四诊 1是 0否
     */
    private Integer cancel = 0;

    /**
     * 确认病是否符合信息
     *
     * @param diseaseName 疾病名称
     * @return
     */
    public String affirmDisease(String diseaseName) {
        //提示
        String hint = "";
        String nl = NL;
        if (NL.contains(".")) {
            nl = nl.split(".")[0];
        }
        int age = Integer.parseInt(nl);
        if (diseaseName.equals("阳痿") || diseaseName.equals("早泄") || diseaseName.equals("不射精") || diseaseName.equals("遗精") || diseaseName.equals("子痈") || diseaseName.equals("血精") || diseaseName.equals("精异不育") || diseaseName.equals("前列腺增生") || diseaseName.equals("阳强") || diseaseName.equals("前列腺炎") || diseaseName.equals("前列腺癌")) {
            if (XB.equals("女")) {
                hint = "你的性别不符合这种疾病";
            } else if (age <= 6) {
                hint = "你的年龄不符合这种疾病";
            }
        } else if (diseaseName.equals("不孕症") || diseaseName.equals("中药保胎") || diseaseName.equals("月经不 调") || diseaseName.equals("崩漏") || diseaseName.equals("痛经") || diseaseName.equals("盆腔炎") || diseaseName.equals("术后产后康复") || diseaseName.equals("子宫癌")) {
            if (XB.equals("男")) {
                hint = "你的性别不符合这种疾病";
            } else if (age <= 6) {
                hint = "你的年龄不符合这种疾病";
            }
        } else if (diseaseName.equals("小儿哮喘") || diseaseName.equals("小儿厌食") || diseaseName.equals("小儿泄泻") || diseaseName.equals("小儿痢疾") || diseaseName.equals("小儿腮腺炎") || diseaseName.equals("小儿感冒") || diseaseName.equals("小儿肺炎喘嗽") || diseaseName.equals("小儿支气管炎")) {
            if (age > 6) {
                hint = "你的年龄不符合这种疾病";
            }
        }
        return hint;
    }
}
